Performing maintenance of a linked list where multiple readers and writers may be attempting to access the linked list can be problematic. Examples of maintenance include adding or removing of elements from the linked list, garbage collection of removed elements in the linked list, etc. Multiple readers should be able to traverse the linked list concurrently and quickly. Readers can read stale elements in the list. However, an element in the list cannot be freed while any reader is potentially reading the element. A conventional method for solving this problem is to use a lock to serialize both readers and writers from and to the linked list. A read-write lock could also be used. However, these methods can affect performance because of the overhead of obtaining the lock.